package com.example.repository;

import com.example.entity.FinancialIndicator;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;

/**
 * 财务指标Repository
 */
@Repository
public interface FinancialIndicatorRepository extends JpaRepository<FinancialIndicator, Long> {

    /**
     * 根据用户ID查询财务指标
     */
    Optional<FinancialIndicator> findByUserId(Long userId);

    /**
     * 根据用户ID列表查询财务指标
     */
    List<FinancialIndicator> findByUserIdIn(List<Long> userIds);

    /**
     * 根据收入类型查询财务指标
     */
    List<FinancialIndicator> findByIncomeType(Integer incomeType);

    /**
     * 查询月收入大于指定金额的用户
     */
    List<FinancialIndicator> findByMonthlyIncomeGreaterThan(BigDecimal amount);

    /**
     * 查询负债收入比大于指定值的用户
     */
    List<FinancialIndicator> findByDebtToIncomeRatioGreaterThan(BigDecimal ratio);

    /**
     * 自定义查询：根据用户ID查询最新的财务指标
     */
    @Query("SELECT f FROM FinancialIndicator f WHERE f.userId = :userId ORDER BY f.updateTime DESC")
    Optional<FinancialIndicator> findLatestByUserId(@Param("userId") Long userId);

    /**
     * 自定义查询：查询高风险用户（负债收入比 > 0.7）
     */
    @Query("SELECT f FROM FinancialIndicator f WHERE f.debtToIncomeRatio > 0.7")
    List<FinancialIndicator> findHighRiskUsers();
} 